<?php

namespace App\Containers\AppSection\Data\Models;

use App\Containers\AppSection\User\Models\User;
use App\Ship\Parents\Models\Model;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

/**
 * Персональные данные
 *
 * @property int $id Id
 * @property int $user_id Владелец
 * @property string $fio ФИО
 * @property bool $without_patronymic Без отчества
 * @property string $birth_date Дата рождения
 * @property string $ogrnip ОГРНИП
 * @property string $position Должность
 * @property string $inn ИНН
 * @property string $snils СНИЛС
 * @property string $birth_place Место рождения
 * @property string $registration_address Адрес регистрации по месту жительства
 * @property bool $address_matches Адреса совпадают
 * @property string $residence_address Адрес фактического пребывания
 * @property Carbon $created_at Время создания
 * @property Carbon $updated_at Время обновления
 *
 * @property User $user Владелец
 */
class Personal extends Model
{
    protected $fillable = [
        'user_id',
        'fio',
        'without_patronymic',
        'birth_date',
        'ogrnip',
        'position',
        'inn',
        'snils',
        'birth_place',
        'registration_address',
        'address_matches',
        'residence_address',
    ];

    protected $table = 'personal_data';

    protected $casts = [
        'birth_date' => 'date'
    ];
    protected $dates = [
        'created_at',
        'updated_at',
    ];

    /**
     * A resource key to be used in the serialized responses.
     */
    protected string $resourceKey = 'Personal';

    /**
     * Владелец
     * @return BelongsTo User
     */
    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class, 'user_id', 'id')->withTrashed();
    }
}
